﻿Option Strict On
Option Explicit On
Option Infer On

Imports System
Imports System.Collections.Generic
Imports GenDotNet.Model.Common

Public Interface IChildData
   Inherits IBaseData

   ReadOnly Property Name() As String
   ReadOnly Property UniqueName() As String
   ReadOnly Property PluralUniqueName() As String
   ReadOnly Property Caption() As String
   ReadOnly Property IsHierarchy() As Boolean
   ReadOnly Property ObjectData() As IObjectData
   ReadOnly Property ChildFlag() As UInt32
   ReadOnly Property ChildKeys() As List(Of IKeyData)
End Interface
'<xs:sequence>
'   <xs:element name="ChildKeyField" type="orm:ChildKeyField" maxOccurs="unbounded"/>
'   <xs:element name="ExtraColumns" type="orm:Property" minOccurs="0" maxOccurs="unbounded" kd:Desc="Almost always inferred - this gives extra columns required to understand child relationships, but that do not appear in the child" />
' </xs:sequence>
' <xs:attribute name="Name" type="xs:string" use="required" />
' <xs:attribute name="ObjectName" type="xs:string" use="required" />
' <xs:attribute name="PluralName" type="xs:string" />
' <xs:attribute name="ChildTableName" type="xs:string" use="required" />
' <xs:attribute name="Caption" type="xs:string" use="required" />
' <xs:attribute name="UniqueName" type="xs:string" use="required" />
' <xs:attribute name="PluralUniqueName" type="xs:string" use="required" />
' <xs:attribute name="Flag" type="xs:unsignedLong" use="required" />
' <xs:attribute name="CasedName" type="xs:string" use="optional"  kd:UsedByHarness="false" kd:RarelyManual="true" kd:Desc="Provides a 'camel case' name for use in private variables and parameters"/>
' <xs:attribute name="IsHierarchy" type="xs:boolean" use="optional" />
